// #include <iostream>
// #include "format.hpp"
// #include <string>
// #include "sink.hpp"
#include <unistd.h>
// #include "logger.hpp"
// #include <vector>
// #include <stdio.h>
// #include "buffer.hpp"
#include "tqblog.h"
// int main(){
//     // std::string pth="./abc/gh/kj/mm.txt";
//     // std::cout<<tqblog::util::Date::now()<<std::endl;
//     // std::cout<<tqblog::util::File::path("./")<<std::endl;
//     // std::cout<<tqblog::util::File::exists("./")<<std::endl;
//     // tqblog::util::File::createDirectory("./d1/d2");
//     // std::cout<<tqblog::LogLevel::toString(tqblog::LogLevel::value::DEBUG)<<std::endl;
//     // std::cout<<tqblog::LogLevel::toString(tqblog::LogLevel::value::INFO)<<std::endl;
//     // std::cout<<tqblog::LogLevel::toString(tqblog::LogLevel::value::WARN)<<std::endl;
//     // std::cout<<tqblog::LogLevel::toString(tqblog::LogLevel::value::ERROR)<<std::endl;
//     // std::cout<<tqblog::LogLevel::toString(tqblog::LogLevel::value::FATAL)<<std::endl;
//     // "[%d{%H:%M:%S}][%p]%T%m%n"
//     //"[%d{%Y:%m:%d:%H:%M:%S}][%p]%T%m%n"

//     // tqblog::LogMsg msg(tqblog::LogLevel::value::DEBUG,12345,"main.cc","logger1","debug信息");

//     // tqblog::Formatter f("[%d{%Y:%m:%d:%H:%M:%S}][%p]%T%m%n");
//     // f.parsepattern();
//     // std::string s=f.format(msg);
//     // std::cout<<s<<std::endl;

//     // tqblog::LogSink::ptr p=tqblog::SinkFactory::create<tqblog::StdoutSink>();
//     // tqblog::LogSink::ptr p1=tqblog::SinkFactory::create<tqblog::FileSink>("d1/d2/my.log");
//     // tqblog::LogSink::ptr p2=tqblog::SinkFactory::create<tqblog::RollSizeSink>("p1/p2/my",64);
//     // tqblog::LogSink::ptr p3=tqblog::SinkFactory::create<tqblog::RolltimeSink>("b1/b2/roll-",tqblog::gap::GAP_SECOND,20);
//     // tqblog::LogMsg msg(tqblog::LogLevel::value::DEBUG,12345,"main.cc","logger1","debug信息");
//     // tqblog::Formatter f("[%d{%Y:%m:%d:%H:%M:%S}][%p]%T%m%n");
//     // f.parsepattern();
//     // std::string s=f.format(msg);
//     // p->log(s.c_str(),s.size());
//     // p1->log(s.c_str(),s.size());
//     // // while(1){
//     // //     p2->log(s.c_str(),s.size());
//     // //     usleep(100);
//     // // }
//     // while(1){
//     //     p3->log(s.c_str(),s.size());
//     //     usleep(100);
//     // }

//     // tqblog::LogSink::ptr p=tqblog::SinkFactory::create<tqblog::StdoutSink>();
//     // tqblog::LogSink::ptr p1=tqblog::SinkFactory::create<tqblog::FileSink>("d1/d2/my.log");
//     // tqblog::LogSink::ptr p2=tqblog::SinkFactory::create<tqblog::RollSizeSink>("p1/p2/my",1024*1024);
//     // tqblog::LogSink::ptr p3=tqblog::SinkFactory::create<tqblog::RolltimeSink>("b1/b2/roll-",tqblog::gap::GAP_SECOND,5);
//     // tqblog::LogMsg msg(tqblog::LogLevel::value::DEBUG,12345,"main.cc","logger1","debug信息");
//     // tqblog::Formatter f("[%d{%Y:%m:%d:%H:%M:%S}][%p]%T%m%n");
//     // f.parsepattern();
//     // std::vector<tqblog::LogSink::ptr> sink={p,p1,p2,p3};
//     // std::string s="测试日志器";
//     // tqblog::logger::ptr ll=tqblog::logger::ptr(new tqblog::SyncLogger(s,sink,f,tqblog::LogLevel::value::DEBUG));

//     // tqblog::LogSink::ptr p=tqblog::SinkFactory::create<tqblog::StdoutSink>();
//     // tqblog::LogSink::ptr p1=tqblog::SinkFactory::create<tqblog::FileSink>("d1/d2/my.log");
//     // tqblog::LogSink::ptr p2=tqblog::SinkFactory::create<tqblog::RollSizeSink>("p1/p2/my",1024*1024);
//     // tqblog::LogSink::ptr p3=tqblog::SinkFactory::create<tqblog::RolltimeSink>("b1/b2/roll-",tqblog::gap::GAP_SECOND,5);
//     // tqblog::Loggerbuilder::ptr l=tqblog::Loggerbuilder::ptr(new tqblog::Localloggerbuilder());
//     // l->buildLoggerlevel(tqblog::LogLevel::value::DEBUG);
//     // l->buildLoggername("日志器");
//     // l->buildloggertype(tqblog::LoggerType::LOGGER_SYNC);
//     // std::string pattern="[%d{%Y:%m:%d:%H:%M:%S}][%p]%T%m%n";
//     // l->buildloggerformatter(pattern);
//     // l->buildsink<tqblog::StdoutSink>();
//     // l->buildsink<tqblog::FileSink>("d1/d2/my.log");
//     // l->buildsink<tqblog::RollSizeSink>("p1/p2/my",1024*1024);
//     // l->buildsink<tqblog::RolltimeSink>("b1/b2/roll-",tqblog::gap::GAP_SECOND,5);
//     // tqblog::logger::ptr ll=l->build();
//     // while(1){
//     //      //ll->debug("main.cc",1234567,"%s","测试日志");
//     //      ll->debug(__FILE__,__LINE__,"%s","测试日志");
//     //      usleep(100);
//     // }

//     // std::ifstream f;
//     // f.open("./test.txt",std::ifstream::in|std::ifstream::binary);
//     // f.seekg(0,std::ifstream::end);
//     // size_t fsize=f.tellg();
//     // f.seekg(0,std::ifstream::beg);
//     // std::string ss;
//     // std::cout<<fsize<<std::endl;
//     // ss.resize(fsize);
//     // f.read(&ss[0], fsize);
//     // tqblog::Buffer buffer;
//     // buffer.push(ss.c_str(),ss.size());
//     // f.close();

//     // std::cout<<ss.size()<<std::endl;

//     // std::ofstream g;
//     // g.open("./new.txt",std::ofstream::out|std::ofstream::binary);
//     // size_t size=buffer.readAbleSize();
//     // while(size){
//     //     g.write(buffer.begin(),1);
//     //     buffer.moveReader(1);
//     //     size--;
//     // }
//     // g.close();

//     // tqblog::Loggerbuilder::ptr l=tqblog::Loggerbuilder::ptr(new tqblog::Localloggerbuilder());
//     // l->buildLoggerlevel(tqblog::LogLevel::value::DEBUG);
//     // l->buildLoggername("mylogger");
//     // l->buildloggertype(tqblog::LoggerType::LOGGER_ASYNC);
//     // std::string pattern="[%c]%f %l %m%n";
//     // l->buildloggerformatter(pattern);
//     // l->buildsink<tqblog::StdoutSink>();
//     // l->buildsink<tqblog::FileSink>("d1/d2/my.log");
//     // l->buildsink<tqblog::RollSizeSink>("p1/p2/my",64);
//     // l->buildsink<tqblog::RolltimeSink>("b1/b2/roll-",tqblog::gap::GAP_SECOND,1);
//     // tqblog::logger::ptr ll=l->build();
//     // size_t count=0;
//     // while(count<100000){
//     //      ll->debug(__FILE__,__LINE__,"log_test-%d",count++);
//     // }

//     return 0;
// }
void test(){
    // size_t count = 0;
    // tqblog::logger::ptr ll=tqblog::Loggermanager::getinstance().getlogger("mylogger");
    // while (count < 100000)
    // {
    //     ll->debug(__FILE__, __LINE__, "log_test-%d", count++);
    // }

    // size_t count = 0;
    // //tqblog::logger::ptr ll=tqblog::Loggermanager::getinstance().getlogger("mylogger");
    // while (count < 10)
    // {
    //     ll->debug("log_test-%d", count++);
    // }

    // size_t count = 0;
    // while (count < 100)
    // {
    //     DEBUG("log_test-%d", count++);
    // }

    size_t count = 0;
    tqblog::logger::ptr ll=tqblog::Getlogger("mylogger");
    while (count < 10000)
    {
        ll->debug("log_test-%d", count++);
    }
 

}
int main()
{

    tqblog::Loggerbuilder::ptr l = tqblog::Loggerbuilder::ptr(new tqblog::globalloggerbuilder());
    l->buildLoggerlevel(tqblog::LogLevel::value::DEBUG);
    l->buildLoggername("mylogger");
    l->buildloggertype(tqblog::LoggerType::LOGGER_ASYNC);
    std::string pattern = "[%c]%f %l %p %m%n";
    l->buildloggerformatter(pattern);
    //l->buildsink<tqblog::StdoutSink>();
    l->buildsink<tqblog::FileSink>("d1/my.log");
    l->buildsink<tqblog::RollSizeSink>("p1/p2/my", 64);
    l->buildsink<tqblog::RolltimeSink>("b1/b2/roll-", tqblog::gap::GAP_SECOND, 1);
    l->build();
    test();

    return 0;
}